package com.chat.client.controller.test.page;

import com.alibaba.fastjson.JSONObject;

/**
 * 页面工具类
 */
public class PageUtils {
    //监测实体类中是否具有某些参数、但又不限制其继承性
    public static <T extends Pageable> boolean returnCount(Pageable pageable) {

        return false;
    }

    public static boolean returnCount(JSONObject jsonObject) {
        return returnCount(jsonObject, false, 0);
    }


    //json格式

    //监测json数据是否包含分页参数
    public static boolean returnCount(JSONObject jsonObject, boolean calc, int defaultSize) {
        if (jsonObject == null) {
            return false;
        }
        Integer pageSize = jsonObject.getInteger("pageSize");
        Integer pageNumber = jsonObject.getInteger("pageNumber");
        if (!calc && (pageNumber == null || pageSize == null))
            return false;
        if (calc) {
            pageSize = pageSize == null ? defaultSize : pageSize;
            pageNumber = pageNumber == null ? 0 : pageNumber;
            jsonObject.put("startPage", (pageNumber - 1) * pageSize);
            jsonObject.put("endPage", pageSize * pageNumber);
        }
        return true;
    }

    //监测json数据并添加分页计算值
    public static boolean returnCountAndCalc(JSONObject jsonObject, Integer defaultSzie) {
        //默认页面大小为50
        return returnCount(jsonObject, true, defaultSzie == null ? 50 : defaultSzie);
    }

    /**
     * 判断是否具有分页值并一定返回默认值
     *
     * @param jsonObject
     * @return
     */
    public static boolean returnCountAndCalc(JSONObject jsonObject) {
        //默认页面大小为50
        return returnCountAndCalc(jsonObject, null);
    }
}
